#include "quicksort.h"
#include <stdio.h>

void swap(int *a, int *b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}

int partion(int *a, int l, int r)
{
	int i = l-1, j = r;

	while(i < j)
	{	
		while(a[++i] < a[r]);
		while(a[--j] > a[r])
		{
			if(i >= j) break;
		}
		if(i < j)
		{
			swap(&a[i], &a[j]);
		}	
	}

	swap(&a[i], &a[r]);

	return i;
}

void quicksort(int *a, int l, int r)
{
	int m;

	if(l == r)
	{
		return;
	}

	m = partion(a, l, r);
	if(l < m-1)
	{
		quicksort(a, l, m-1);
	}
	if(m+1 < r)
	{
		quicksort(a, m+1, r);
	}
}
